package com.sykj.why.mongo.service;

import com.sykj.why.mongo.document.entity.MenuCategoryT;
import com.sykj.why.mongo.document.entity.MenuT;
import com.sykj.why.mongo.dto.PageDTO;
import com.sykj.why.mongo.vo.entity.MenuCategoryTVo;
import com.sykj.why.mongo.vo.entity.MenuTVo;
import com.sykj.why.util.Page;

import java.util.List;

/**
 * @author Eleven
 * @date 2019/6/4
 * @desc 菜单分类业务访问层
 */

public interface MenuCategoryTService extends BasicService<MenuCategoryT>{

    /**
     * 添加菜单分类
     * @param menuCategoryT
     */
    void saveMenuCategory(MenuCategoryT menuCategoryT);

    /**
     * 删除菜单分类
     * @param id
     */
    void removeMenuCategory(String id);

    /**
     * 修改菜单分类
     * @param menuCategoryT
     */
    void updateMenuCategory(MenuCategoryT menuCategoryT);

    /**
     * 启用/禁用菜单分类
     * @param id
     * @param flag
     */
    void disableOrEnable(String id,boolean flag);

    /**
     * 验证菜单分类名称是否重复
     * @param menuCategoryT
     */
    void verifyName(MenuCategoryT menuCategoryT);

    /**
     * 通过id查询菜单分类
     * @param id
     * @return
     */
    MenuCategoryT findById(String id);

    /**
     * 查询所有菜单分类
     * @return
     */
    List<MenuCategoryT> findAll();

    /**
     * 分页查询菜单分类
     * @param pageDTO
     * @return
     */
    Page findByPage(PageDTO pageDTO);

    /**
     * 通过菜单Id和父级Id查询菜单分类树状图
     * @param menuId
     * @param pid
     * @return
     */
    List<MenuCategoryTVo> findMenuCategoryTreeByMenuIdAndPid(String menuId,String pid);

    /**
     * 查询菜单下的菜单分类集合
     * @param menuId
     * @return
     */
    List<MenuCategoryT> findMenuCategoryListByMenuId(String menuId);

    /**
     * 查找该菜单分类的所有父级菜单分类
     * @param id
     * @return
     */
    List<MenuCategoryT> findFathers(String id);

}
